import { useUserStore } from '@/stores/user'

// 角色信息接口
export interface RoleInfo {
  roleCode: string
}

/**
 * 检查用户是否有指定权限
 * @param permissionCode 权限码，如：'system:user:add'
 * @returns 是否有权限
 */
export function hasPermission(permissionCode: string | string[]): boolean {
  const userStore = useUserStore()
  
  // 超级管理员拥有所有权限
  if (userStore.userInfo?.permissionLevel === 3) {
    return true
  }
  
  // 如果传入的是数组，只要有一个权限即可
  if (Array.isArray(permissionCode)) {
    return permissionCode.some((code) => userStore.permissions.includes(code))
  }
  
  // 单个权限判断
  return userStore.permissions.includes(permissionCode)
}

/**
 * 检查用户是否有任意一个权限
 * @param permissionCodes 权限码数组
 * @returns 是否有任意一个权限
 */
export function hasAnyPermission(permissionCodes: string[]): boolean {
  return hasPermission(permissionCodes)
}

/**
 * 检查用户是否拥有所有权限
 * @param permissionCodes 权限码数组
 * @returns 是否拥有所有权限
 */
export function hasAllPermissions(permissionCodes: string[]): boolean {
  const userStore = useUserStore()
  
  // 超级管理员拥有所有权限
  if (userStore.userInfo?.permissionLevel === 3) {
    return true
  }
  
  return permissionCodes.every((code) => userStore.permissions.includes(code))
}

/**
 * 检查用户角色
 * @param roleCode 角色编码，如：'admin'
 * @returns 是否拥有该角色
 */
export function hasRole(roleCode: string | string[]): boolean {
  const userStore = useUserStore()
  
  if (!userStore.userInfo?.roles) {
    return false
  }
  
  const roleCodes = userStore.userInfo.roles.map((role: RoleInfo) => role.roleCode)
  
  if (Array.isArray(roleCode)) {
    return roleCode.some((code) => roleCodes.includes(code))
  }
  
  return roleCodes.includes(roleCode)
}

